﻿YUI.add('editar-pregunta-view', function (Y) {
    'use strict';
    Y.EditarPregunta = Y.Base.create('EditarPregunta', Y.View, [], {
        templateIsCharged: false,
        loadTemplate: function () {
            if (this.template == '') {
                var that = this,
                validator = null,
                request = Y.io('/ExcellentProject/scripts/views/cuestionarios/preguntas/templates/editarPregunta.html', {
                    on: {
                        complete: function (id, response) {
                            that.templateIsCharged = true;
                            that.template = response.responseText;

                            that.render();
                        }
                    },
                    failure: function (id, response) {
                        alert(response)
                    }
                })
            }
        },
        events: {
            '.guardar': {
                click: 'guardarPregunta'
            },
            '.seleccionarRecursos': {
                click: 'seleccionarRecurso'
            }
        },

        render: function () {
            this.loadTemplate();
            if (this.templateIsCharged) {
                var contentTemplate = Y.Handlebars.compile(this.template);

                var catalogos = amplify.store('catalogos');
                //var opcionespreguntas = this.get('model').toJSON();

                var listaCatalogos = catalogos.find(function (e) { return e.Clave == "EstadoPregunta"; })
                var listaTipoPregunta = catalogos.find(function (e) {
                    return e.Clave == 'TipoPregunta';
                })
                var listaCategoriaPregunta = catalogos.find(function (e) {
                    return e.Clave == 'CategoriaPregunta';
                })

                var opcion1 = { Respuesta: false };
                var opcion2 = { Respuesta: false };
                var opcion3 = { Respuesta: false };
                var opcion4 = { Respuesta: false };

                if (this.get('model').get('IdPregunta') != 0) {
                    var modeloJSON = this.get('model').toJSON().Opciones;
                    opcion1 = modeloJSON[0];
                    opcion2 = modeloJSON[1];
                    opcion3 = modeloJSON[2];
                    opcion4 = modeloJSON[3];
                }

                this.get('container').setHTML(contentTemplate(Y.merge(this.get('model').getAttrs(),
                    { EstadosPregunta: listaCatalogos },
                    { TipoPregunta: listaTipoPregunta },
                    { CategoriaPregunta: listaCategoriaPregunta },
                    { Opcion1: opcion1 },
                    { Opcion2: opcion2 },
                    { Opcion3: opcion3 },
                    { Opcion4: opcion4 })));


                Y.one('#tipo').set('value', this.get('model').get('CodigoTipo'))
                Y.one('#categoria').set('value', this.get('model').get('CodigoCategoria'))
                Y.one('#estado').set('value', this.get('model').get('Estado'))
                
               
                if (Y.one('#tipo').get('value') === 'SEM') {
                    Y.one('#opcionesSeleccionMultiple').show();
                    Y.one('#opcionesSeleccionSimple').hide();
                } else {
                    Y.one('#opcionesSeleccionSimple').show();
                    Y.one('#opcionesSeleccionMultiple').hide();
                }

                Y.one('#tipo').on('change', function (ev) {

                    if (ev.currentTarget.get('value') === 'SEM') {
                        Y.one('#opcionesSeleccionMultiple').show();
                        Y.one('#opcionesSeleccionSimple').hide();
                    } else {
                        Y.one('#opcionesSeleccionSimple').show();
                        Y.one('#opcionesSeleccionMultiple').hide();
                    }

                })

                Y.one('#imageViewer').hide()
                Y.one('#audioPlayer').hide()
                Y.one('#videoPlayer').hide()

                if (this.get('recurso') != undefined) {
                    var recurso = this.get('recurso')
                    Y.one('#idRecurso').set('value', this.get('recurso').get('IdRecurso'))

                    if (recurso.get('CodigoTipo') == 'IMG') {
                        Y.one('#imageDisplay').set('src', 'http://localhost/ExcellentProject.Cuestionarios/api/streamming?filename=' + recurso.get('Uri') + '&ext=jpeg')
                        Y.one('#imageViewer').show()
                    }
                    if (recurso.get('CodigoTipo') == 'VID') {
                        Y.one('#videoDisplay').set('src', 'http://localhost/ExcellentProject.Cuestionarios/api/streamming?filename=' + recurso.get('Uri') + '&ext=mp4')
                        Y.one('#videoPlayer').show()
                    }
                    if (recurso.get('CodigoTipo') == 'SND') {
                        Y.one('#audioDisplay').set('src', 'http://localhost/ExcellentProject.Cuestionarios/api/streamming?filename=' + recurso.get('Uri') + '&ext=mp3')
                        Y.one('#audioPlayer').show()
                    }
                }
            }
        },


        guardarPregunta: function (ev) {

            if (Y.one('#tipo').get('value') === 'SEM') {
                if (Y.one('[name=opcionMultiple]:checked') == null) {
                    bootbox.alert('Seleccione una respuesta para la pregunta');
                    return;
                }
            } else {

                if (Y.one('[name=opcionSimple]:checked') == null) {
                    bootbox.alert('Seleccione una respuesta para la pregunta');
                    return;
                }
                else {
                    bootbox.dialog({
                        message: "<h5>Pregunta grabada</h5>",
                        title: "Confirmación",
                        show: true,
                        backdrop: true,
                        closeButton: true,
                        animate: true,

                        className: "my-modal",
                        buttons: {
                            success: {
                                label: "Ok",
                                className: "btn btn-success",

                                callback: function () { }
                            }
                        }
                    });
                }
            }

            var model = this.get('model');
            model.setAttrs({
                CodigoTipo: Y.one('#tipo').get('value'),
                Enunciado: Y.one('#enunciado').get('value'),
                CodigoCategoria: Y.one('#categoria').get('value'),
                CodigoArea: Y.one('#area').get('value'),
                Estado: Y.one('#estado').get('value')
            });


            var options = null;
            var isSaveOperation = false;
            if (model.get('IdPregunta') != 0)
                options = { action: 'update', idPreg: model.get('IdPregunta'), urlName: 'updateOption' };
            else {
                options = { urlName: 'saveOption' };
                model.set('IdPregunta', 0)
                isSaveOperation = true;
            }
            var that = this, a = model.save(options, function (err, response) {
                if (err != null)
                    alert('Ocurrieron problemas al actualizar la pregunta seleccionada')
                else {
                    var idPregunta = (isSaveOperation) ? Y.JSON.parse(response.responseText).IdPregunta : model.get('IdPregunta');

                    var opcion1 = null;
                    var opcion2 = null;
                    var opcion3 = null;
                    var opcion4 = null;

                    debugger
                    if (Y.one('#tipo').get('value') == 'SES') {
                        var value = Y.one('[name=opcionSimple]:checked').get('value');

                        opcion1 = new Y.Opcion({ IdPregunta: idPregunta, Descripcion: Y.one('#inputOpcionSimple1').get('value') })
                        opcion2 = new Y.Opcion({ IdPregunta: idPregunta, Descripcion: Y.one('#inputOpcionSimple2').get('value') })
                        opcion3 = new Y.Opcion({ IdPregunta: idPregunta, Descripcion: Y.one('#inputOpcionSimple3').get('value') })
                        opcion4 = new Y.Opcion({ IdPregunta: idPregunta, Descripcion: Y.one('#inputOpcionSimple4').get('value') })
                        debugger
                        if (value == 'opcionSimple1')
                            opcion1.set('Respuesta', 1)
                        else if (value == 'opcionSimple2')
                            opcion2.set('Respuesta', 1)
                        else if (value == 'opcionSimple3')
                            opcion3.set('Respuesta', 1) 
                        else if (value == 'opcionSimple4')
                            opcion4.set('Respuesta', 1)

                    } else {
                        opcion1 = new Y.Opcion({ IdPregunta: idPregunta, Descripcion: Y.one('#inputOpcionMultiple1').get('value') })
                        opcion2 = new Y.Opcion({ IdPregunta: idPregunta, Descripcion: Y.one('#inputOpcionMultiple2').get('value') })
                        opcion3 = new Y.Opcion({ IdPregunta: idPregunta, Descripcion: Y.one('#inputOpcionMultiple3').get('value') })
                        opcion4 = new Y.Opcion({ IdPregunta: idPregunta, Descripcion: Y.one('#inputOpcionMultiple4').get('value') })
                        debugger
                        if (Y.one('#opcionM1').get('checked'))
                            opcion1.set('Respuesta', 1)
                        if (Y.one('#opcionM2').get('checked'))
                            opcion2.set('Respuesta', 1)
                        if (Y.one('#opcionM3').get('checked'))
                            opcion3.set('Respuesta', 1)
                        if (Y.one('#opcionM4').get('checked'))
                            opcion4.set('Respuesta', 1)
                    }

                    debugger
                    if (!isSaveOperation) {
                        if (Y.one('#tipo').get('value') == 'SES') {
                            opcion1.set('IdOpcion', Y.one('#opcionSimple1').getAttribute('commonid'))
                            opcion2.set('IdOpcion', Y.one('#opcionSimple2').getAttribute('commonid'))
                            opcion3.set('IdOpcion', Y.one('#opcionSimple3').getAttribute('commonid'))
                            opcion4.set('IdOpcion', Y.one('#opcionSimple4').getAttribute('commonid'))
                        }
                        else {
                            opcion1.set('IdOpcion', Y.one('#opcionM1').getAttribute('commonid'))
                            opcion2.set('IdOpcion', Y.one('#opcionM2').getAttribute('commonid'))
                            opcion3.set('IdOpcion', Y.one('#opcionM3').getAttribute('commonid'))
                            opcion4.set('IdOpcion', Y.one('#opcionM4').getAttribute('commonid'))
                        }
                        options = { action: 'update', urlName: 'updateOption' };
                        opcion1.save(options, function (err, response) {
                        })
                        opcion2.save(options, function (err, response) {
                        })
                        opcion3.save(options, function (err, response) {
                        })
                        opcion4.save(options, function (err, response) {
                        })
                    } else {
                        options = { urlName: 'saveOption' };
                        opcion1.save(options, function (err, response) {
                        })
                        opcion2.save(options, function (err, response) {
                        })
                        opcion3.save(options, function (err, response) {
                        })
                        opcion4.save(options, function (err, response) {
                        })
                        debugger
                        //Grabacion del recurso
                        var data = {
                            "IdPregunta": idPregunta,
                            "IdRecursos": [
                              Y.one('#idRecurso').get('value')
                            ]
                        }
                        Y.io('http://localhost/ExcellentProject.Cuestionarios/api/preguntas/asignarrecursos', {
                            method: 'POST',
                            data: JSON.stringify(data),
                            headers: {
                                'Content-Type': 'application/json'
                            },
                            on: {
                                success: function (id, response) {
                                    alert('Pregunta guardada')
                                    Y.one('#navigatePregunta').set('href', '/preguntas');
                                    Y.one('#navigatePregunta').simulate("click");
                                },
                                error: function (id, response) {
                                    debugger
                                }
                            }
                        });
                        

                    }
                }
            })
        },
        seleccionarRecurso: function (ev) {
            //almacenamiento en cache
            var model = this.get('model');
            model.setAttrs({
                CodigoTipo: Y.one('#tipo').get('value'),
                Enunciado: Y.one('#enunciado').get('value'),
                CodigoCategoria: Y.one('#categoria').get('value'),
                CodigoArea: Y.one('#area').get('value'),
                Estado: Y.one('#estado').get('value')
            });

            amplify.store('formularioPreguntas', model)
            debugger
            Y.one('#seleccionarRecurso').simulate("click");
        }
    })

}, '0.0.0.1', {
    requires: ['view', 'handlebars', 'node',
        'pregunta-model-list', 'pregunta-model', 'json-parse', 'event', 'node-event-simulate', 'opcion-model', 'io']
})